package com.zjl.redis.第06章_SpringBoot整合redis;

import redis.clients.jedis.*;

import java.util.HashSet;
import java.util.Set;


public class B3_JedisSentinelPool {

    /**
     * 哨兵 连接
     */
    private static JedisSentinelPool jedisSentinelPool = null;

    public static Jedis getJedisFromSentinel(){
        if(jedisSentinelPool == null){
            Set<String> sentinelSet = new HashSet<>();
            sentinelSet.add("127.0.0.1:26379");//哨兵1ip端口
            sentinelSet.add("127.0.0.1:26380");//哨兵2ip端口
            sentinelSet.add("127.0.0.1:26381");//哨兵3ip端口

            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            jedisPoolConfig.setMaxTotal(10);//最大可用连接数
            jedisPoolConfig.setMaxIdle(5);//最大闲置连接数
            jedisPoolConfig.setMinIdle(5);//最小闲置连接数
            jedisPoolConfig.setBlockWhenExhausted(true);//连接耗尽是否等待
            jedisPoolConfig.setMaxWaitMillis(2000);//等待时间 毫秒
            jedisPoolConfig.setTestOnBorrow(true);//取连接时进行ping pong测试

            // mymaster  哨兵管理的主机的名字，与配置文件一致
            jedisSentinelPool = new JedisSentinelPool("mymaster"
                    ,sentinelSet,jedisPoolConfig);
        }
        //会根据哨兵的信息，自己找redis的ip和端口号
        return jedisSentinelPool.getResource();
    }
    public static void main(String[] args) {
        Jedis redis = getJedisFromSentinel();
        redis.close();
    }
}
